The present invention relates in general to multiprocessor computer systems and, in particular to a method for distribution of maintenance tasks in a multiprocessor computer system.
A computer system refers to the hardware and software components that run a computer or computers.
Most computers have a central processing unit (CPU) that serves as the main logic and control unit of a computer. The terms processor and CPU are often used interchangeably.
A modern CPU consists of a single, tiny chip of specially produced silicon (usually a square centimeter or less) on the top surface of which are formed millions of transistors and other circuit elements using a sub-micron fabrication process. Each chip is housed in a high precision ceramic or plastic package and mounted on the motherboard (i.e., the main circuit board on a computer).
Although most personal computers have a single CPU, some high performance computers have multiple CPUs in order to further increase processing throughput (i.e., the amount of data that can be processed per unit of time). Computers also contain other microprocessors, such as those in disk drives and other peripheral devices.
A CPU contains three main sections: (1) an arithmetic/logic unit, (2) a control unit and (3) registers. The arithmetic/logic unit contains circuitry that performs data manipulation. The control unit consists of circuitry for coordinating the machine's activities. The registers are high speed memory cells that are used for holding instructions for data that is currently being processed.
The CPU reads data from the main memory, which consists of RAM (random access memory) chips, by supplying the addresses of the appropriate memory cells along with a read signal. Likewise, it writes data to memory by providing the addresses of the destination cells together with a write signal.
A multiprocessor computer system refers to a computer system in which two or more CPUs share access to a common memory.
Multiprocessor system is a generic term for the use of two or more central processing units (CPUs) within a single computer system. It refers to a computer system's ability to support more than one process (program) at the same time.
In a multiprocessor system, all CPUs may be equal, or some may be reserved for special purposes. A combination of hardware and operating-system software design considerations determines the symmetry in a given system. For example, hardware or software considerations may require that only one CPU respond to all hardware interrupts, whereas all other work in the system may be distributed equally among CPUs; or execution of kernel-mode code may be restricted to only one processor, whereas user-mode code may be executed in any combination of processors. Multiprocessor systems are often easier to design if such restrictions are imposed, but they tend to be less performing than systems in which all CPUs are utilized equally.
This multiprocessor system may be further understood as one of parallel-processing computer systems.
Parallel processing operations imply that processing operations which have been performed by a single processor employed within the conventional computer are performed in a parallel form by parallel-operating plural processors. As a result, high speed processing operations may be realized.
On a computer with multiple CPUs and multiple network interface cards, each network interface card can be programmed to interrupt a specific CPU whenever it receives a packet from the network. The Transmission Control Protocol/Internet Protocol (TCP/IP) stack on the operating system processes the received network packets. As part of processing the network packet, the stack needs to start certain tasks that execute at a later time. These are called “maintenance tasks” which perform operations that are critical to keep the TCP/IP stack functioning properly and also to ensure trouble free functioning of the operating system. The TCP/IP stack does this by instructing the operating system to execute a specific function at a specific time. This function does the maintenance tasks. The operating system executes the specified function at the specified time on the same CPU that did the processing of the network packet. It does this by generating a low priority interrupt at the specified time, which will then execute the function that contains the code for doing the aforementioned maintenance.
The interrupt generated by the network interface card is of a higher priority than the one generated by the operating system for executing the function that was specified by the TCP/IP stack. Hence, it follows that the operating system executes the function that does the maintenance only after all the network packets have been processed.
When there is incessant network traffic and network packets continue to arrive at a very high rate, the CPU that is programmed to service the network interface card is constantly interrupted. This could cause a situation where the function that is to be executed to perform the maintenance never actually gets executed at the specified time because as mentioned previously, the interrupt that is generated to execute this function is of a lower priority compared to the interrupt generated by the network interface card. Given sufficient time, the number of these pending maintenance tasks could steadily increase, negatively affecting the proper functioning of the stack and the operating system in general.